1. לפתור בעיה בקוד קיים שחלק מהזמן מריץ נכון אך במקרים מסוימים לא מריץ נכון.
הקוד עצמו הוא לקבל מספר ולבדוק מה אורך המחזור שיש בו בייצוג הבינארי שלו(לדוגמא: 10010010. המחזור הוא 100 ולכן אורך המחזור הוא 3)
2. שאלה לגבי מחיר מינימלי לשלם על נסיעות רכבת.
יש מערך בגודל 30 עם תאריכים. מחיר של כרטיס ליום אחד הוא 2$, לשבעה ימים רצופים 7$ ול30 יום 25$.
נגיד אם המערך הוא [1,2,4,5,10] המחיר האופטימלי יהיה 9$
כי לתאריכים 1,2,4,5 שנכנסים כולם בטווח של שבעה ימים רצופים נשלם 7$ ולתאריך ה10 נשלם עוד 2$ (שאלה שנראית קלה אבל היא די מבלבלת. צריך לחשוב על פיתרון של תכנות דינאמי ולא ללכת למקום של של counter וכ'ו.. כי יש יותר מדי אפשרויות וזה לא ילך)
3. למצוא מספר צעדים מינימאלי לסגירת פוליגון (שאלה קשה)
לבנות אלגוריתם אשר מקבל שעה hh:mm ומוציא את הזווית המינימאלית בין מחוג השעות למחוג הדקות
תשובות
הוסף תשובה
|
לצפיה בתשובות
מרץ 2020
ניקח את הדקות נחלק ב60 ונוסיף לשעות, נקבל מספר עשרוני שקטן מ12 נסמנוX.
ניקח את הדקות נחלק ב5 ושוב נקבל מספר עשרוני קטן מ12 נסמנו Y.
נחשב אתX-Y וזה יהיה השעה שמייצגת את הזווית בין המחוגים. נחלק ב12 נבצע ערך מוחלט ונכפיל ב2*PI ונקבל זווית ברדיאנים, מה שנותר לבדוק זה האם היא הזווית הקהה או החדה ואת זה נבדוק ע"י חיסור מ2*PI ובדיקה מה יותר קטן ואותו נחזיר.
ראיון 1: מתואר סיפור על מפעל שמכיל ירקות ויש מכונה שממיינת את הירקות לפי סוג, מלפפון או עגבניה. האלגוריתם מזהה לפי תמונה מה הסוג וזה הפלט. האלגוריתם יכול להתחרט ולפלוט פלט אחר בעוד מספר שניות למשל. בהתחלה הפלט הוא "לא יודע" האלגוריתם עוד לא קולט מה הסוג של הירק.המכונה ממיינת לפי הפלט הראשון. עבור הצלחה של מיון של עגבניה המפעל מרוויח 10 שקל עבור כשלון מפסיד 20. עבור הצלחה של מלפפון הרווח הוא 5 שקל ועבור כשלון ההפסד 10. אנחנו רוצים לדעת איזה אלגוריתם ימקסם את הרווחים של החברה, מוצגים באחוזים המדדים של טסט מסוים שהשתמש ב2 אלגוריתמים. הטסט מבצע עבור כל פרי 5 בדיקות במשך 5 שניות. להסביר מה הבעיה בטסט מה לא הגיוני, למצוא את זה בקוד הנתון. ואחכ להציע טסט אחר ולכתוב אותו בקוד.
תשובות
הוסף תשובה
|
לצפיה בתשובות
פברואר 2020
לא צריך לעשות 5 בדיקות, בכל מקרה המכונה ממיינת לפי הפלט הראשון, לכן עד שיש פלט שהוא שונה מ"לא ידוע" נחכה (לולאה) , וכשיש פלט נשווה את עם התוצאה האמיתית תוך כדי התחשבות בנתונים של רווח והפסד לפי כל מקרה. את כל זה נחלק בזמן שלקח לנו לחכות כל פעם עד שהגיע פלט שיכלנו להתקדם הלאה, כלומר סוכמים את הרווח ואת הזמן ובסוף התשובה היא רווח /זמן .
באופן כללי היו 4 שלבים:
שלב ראשון - מבחן בית ב - codility אשר התחלק ל - 3 תתי מבחנים:
מבחן ראשון 30 דקות, מבחן שני 90 דקות ומבחן שלישי 150 דקות.
שלב שני - ראיון עם ראש צוות.
שלב שלישי - ראיון עם ראש מחלקה.
שלב רביעי - ראיון עם HR.
שאלות מתוך הראיון
שלב ראשון (מבחן בית) - מבחן של 30 ו 90 דקות הם סבירים וניתן לסיים בחצי מהזמן. מבחן של ה - 150 דקות הוא קשה עם רושמים אותו ב - C++ כמו שאני עשיתי.
שלב שני (ראיון עם ראש צוות) - תיקון קוד. בקוד היה צריך לגרום לתוכנה להיות single thread ושיעמוד בדרישות שביקשו. ואז ביקשו שיהיה multi thread ויעמוד בדרישות שנתנו.